package object;

public class ObiectDemo {
     public static void main(String[] args) {
         String s1 = new String("hello");
         String s2 = new String("hello");
         //String类重写了equals来比较字符串内容是否相同
         System.out.println(s1.equals(s2));

         StringBuilder builder1 = new StringBuilder("hello");
         StringBuilder builder2 = new StringBuilder("hello");
         //StringBuilder类没有重写equals()，因此调用的还是Object类的equals()比较地址
         System.out.println(builder1.equals(builder2));

         //s1与builder1的类型不同，所以equals()一定是false
         System.out.println(s1.equals(builder1));//false
    /*
    输出引用变量时默认调用Object类的toString()方法
    该方法返回的字符串格式为:类的全称@hashcode值
    但通常这个返回结果对我们的开发是没有意义的
    我们真正想输出的应该是对象的属性
    我们认为Object类的toString()并不能满足需求
    因此我们常常重写toString()来返回具体的属性值
     */

     /*
     调用Object类的equals()，内部还是在使用==比较地址，没有参考意义
     若想比较对象的属性值是否相同，我们认为Object类的equals()并不能满足需求
     因此需要重写equals()
      */
       /*
        Point p1 = new Point(100,200);
        Point p2 = new Point(100,200);
        System.out.println(p1==p2);
        //
        System.out.println(p1.equals(p2));
        */
    }
}